home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / tests / scilab.dia.ref < prev    next >
Text File  |  1999-09-16  |  22KB  |  1,344 lines

  1.  
  2. pi=%pi
  3.  pi  =
  4.  
  5.     3.1415927  
  6.  
  7. i=%i
  8.  i  =
  9.  
  10.     i    
  11.  
  12. e=%e
  13.  e  =
  14.  
  15.     2.7182818  
  16.  
  17. //       tests
  18.  
  19. //
  20.  
  21. 1
  22.  ans  =
  23.  
  24.     1.  
  25.  
  26. a=1
  27.  a  =
  28.  
  29.     1.  
  30.  
  31. b=[1 2 3]
  32.  b  =
  33.  
  34. !   1.    2.    3. !
  35.  
  36. c=[1 2 3;4 5 6]
  37.  c  =
  38.  
  39. !   1.    2.    3. !
  40. !   4.    5.    6. !
  41.  
  42. d=[1 2 3;4 5 6]'
  43.  d  =
  44.  
  45. !   1.    4. !
  46. !   2.    5. !
  47. !   3.    6. !
  48.  
  49. d=[1 2 3 4;4 5 6 7;8 9 10 11;12 13 14 15]
  50.  d  =
  51.  
  52. !   1.     2.     3.     4.  !
  53. !   4.     5.     6.     7.  !
  54. !   8.     9.     10.    11. !
  55. !   12.    13.    14.    15. !
  56.  
  57. d=[1 2;3 4]
  58.  d  =
  59.  
  60. !   1.    2. !
  61. !   3.    4. !
  62.  
  63. e1=[[1 2] [3 4];[5 6 7 8];[9;10;11;12]']
  64.  e1  =
  65.  
  66. !   1.    2.     3.     4.  !
  67. !   5.    6.     7.     8.  !
  68. !   9.    10.    11.    12. !
  69.  
  70. f([1 3 5],[1 2 3])=[-1 -2 -3;-4 -5 -6;-7 -8 -9]
  71.  f  =
  72.  
  73. ! - 1.  - 2.  - 3. !
  74. !   0.    0.    0. !
  75. ! - 4.  - 5.  - 6. !
  76. !   0.    0.    0. !
  77. ! - 7.  - 8.  - 9. !
  78.  
  79. g=[i,2,3;1 i 3;1 2 i]
  80.  g  =
  81.  
  82. !   i      2.     3.  !
  83. !   1.     i      3.  !
  84. !   1.     2.     i   !
  85.  
  86. h=[i 1 2 i 3]
  87.  h  =
  88.  
  89. !   i      1.    2.    i      3. !
  90.  
  91. o=[1 i i 2 3]'
  92.  o  =
  93.  
  94. !   1.  !
  95. ! - i   !
  96. ! - i   !
  97. !   2.  !
  98. !   3.  !
  99.  
  100. b(2)=3
  101.  b  =
  102.  
  103. !   1.    3.    3. !
  104.  
  105. e1(1,3)=1
  106.  e1  =
  107.  
  108. !   1.    2.     1.     4.  !
  109. !   5.    6.     7.     8.  !
  110. !   9.    10.    11.    12. !
  111.  
  112. p='apcdefghijklmnopqrstuvwxyz0123456789'
  113.  p  =
  114.  
  115.  apcdefghijklmnopqrstuvwxyz0123456789   
  116.  
  117. // test de stackg
  118.  
  119. a,b,c,d,e1,f,g,h,o,p
  120.  a  =
  121.  
  122.     1.  
  123.  b  =
  124.  
  125. !   1.    3.    3. !
  126.  c  =
  127.  
  128. !   1.    2.    3. !
  129. !   4.    5.    6. !
  130.  d  =
  131.  
  132. !   1.    2. !
  133. !   3.    4. !
  134.  e1  =
  135.  
  136. !   1.    2.     1.     4.  !
  137. !   5.    6.     7.     8.  !
  138. !   9.    10.    11.    12. !
  139.  f  =
  140.  
  141. ! - 1.  - 2.  - 3. !
  142. !   0.    0.    0. !
  143. ! - 4.  - 5.  - 6. !
  144. !   0.    0.    0. !
  145. ! - 7.  - 8.  - 9. !
  146.  g  =
  147.  
  148. !   i      2.     3.  !
  149. !   1.     i      3.  !
  150. !   1.     2.     i   !
  151.  h  =
  152.  
  153. !   i      1.    2.    i      3. !
  154.  o  =
  155.  
  156. !   1.  !
  157. ! - i   !
  158. ! - i   !
  159. !   2.  !
  160. !   3.  !
  161.  p  =
  162.  
  163.  apcdefghijklmnopqrstuvwxyz0123456789   
  164.  
  165. b(2)
  166.  ans  =
  167.  
  168.     3.  
  169.  
  170. e1(1,3)
  171.  ans  =
  172.  
  173.     1.  
  174.  
  175. e1([1 2],[3 4])
  176.  ans  =
  177.  
  178. !   1.    4. !
  179. !   7.    8. !
  180.  
  181. e1(1:2,:)
  182.  ans  =
  183.  
  184. !   1.    2.    1.    4. !
  185. !   5.    6.    7.    8. !
  186.  
  187. e1(:,4)
  188.  ans  =
  189.  
  190. !   4.  !
  191. !   8.  !
  192. !   12. !
  193.  
  194. e1(:,:)
  195.  ans  =
  196.  
  197. !   1.    2.     1.     4.  !
  198. !   5.    6.     7.     8.  !
  199. !   9.    10.    11.    12. !
  200.  
  201. g(1,1)
  202.  ans  =
  203.  
  204.     i    
  205.  
  206. g(:,1)
  207.  ans  =
  208.  
  209. !   i   !
  210. !   1.  !
  211. !   1.  !
  212.  
  213. g(1:2,:)
  214.  ans  =
  215.  
  216. !   i      2.     3. !
  217. !   1.     i      3. !
  218.  
  219. g(:,:)
  220.  ans  =
  221.  
  222. !   i      2.     3.  !
  223. !   1.     i      3.  !
  224. !   1.     2.     i   !
  225.  
  226. o'
  227.  ans  =
  228.  
  229. !   1.    i      i      2.    3. !
  230.  
  231. //test de stack2
  232.  
  233. //
  234.  
  235. // additions...
  236.  
  237. [1 2 3;4 5 6]-[1 2 3;4 5 6]
  238.  ans  =
  239.  
  240. !   0.    0.    0. !
  241. !   0.    0.    0. !
  242.  
  243. [1 2 3;4 5 6]+2*[1 2 3;4 5 6]-[1 2 3;4 5 6]*3
  244.  ans  =
  245.  
  246. !   0.    0.    0. !
  247. !   0.    0.    0. !
  248.  
  249. [1 i 3;4 5 i]+2*[1 i 3;4 5 i]-[1 i 3;4 5 i]*3
  250.  ans  =
  251.  
  252. !   0    0    0 !
  253. !   0    0    0 !
  254.  
  255. [2*i -4*i 2*i]+2*[i -2*i i]+i*[2 -4 2]-[i -2*i i]*2 -2*[2 -4 2]*i
  256.  ans  =
  257.  
  258. !   0    0    0 !
  259.  
  260. //
  261.  
  262. 2\[4 8 16]/2-[1 2 4]
  263.  ans  =
  264.  
  265. !   0.    0.    0. !
  266.  
  267. i\[2*i 2 i*4]/i-[-i*2 -2 -4*i]
  268.  ans  =
  269.  
  270. !   0    0    0 !
  271.  
  272. // element wise operations
  273.  
  274. [1 2;3 4;5 6].*[1 2;3 4;5 6]-[1 4;9 16;25 36]
  275.  ans  =
  276.  
  277. !   0.    0. !
  278. !   0.    0. !
  279. !   0.    0. !
  280.  
  281. [1 2;3 4;5 6*i].*[1 2;3 4;5 6]-[1 4;9 16;25 36*i]
  282.  ans  =
  283.  
  284. !   0    0 !
  285. !   0    0 !
  286. !   0    0 !
  287.  
  288. [1 2;3 4;5 6].*[1 2;3 4;5 6*i]-[1 4;9 16;25 36*i]
  289.  ans  =
  290.  
  291. !   0    0 !
  292. !   0    0 !
  293. !   0    0 !
  294.  
  295. [1 2;3 4;5 6*i].*[1 2;3 4;5 6*i]-[1 4;9 16;25 -36]
  296.  ans  =
  297.  
  298. !   0    0 !
  299. !   0    0 !
  300. !   0    0 !
  301.  
  302. //
  303.  
  304. [2 9 8;3 10 15]./[2 3 4;3 5 5]-[1 3 2;1 2 3]
  305.  ans  =
  306.  
  307. !   0.    0.    0. !
  308. !   0.    0.    0. !
  309.  
  310. [2 9*i 8;3 10 15]./[2 3 4;3 5 5]-[1 3*i 2;1 2 3]
  311.  ans  =
  312.  
  313. !   0    0    0 !
  314. !   0    0    0 !
  315.  
  316. [2 9 8;3 10 15]./[2*i 3 4;3 5 5]-[-i 3 2;1 2 3]
  317.  ans  =
  318.  
  319. !   0    0    0 !
  320. !   0    0    0 !
  321.  
  322. [2*i 9 8;3 10 15]./[2*i 3 4;3 5 5]-[1 3 2;1 2 3]
  323.  ans  =
  324.  
  325. !   0    0    0 !
  326. !   0    0    0 !
  327.  
  328. //
  329.  
  330. [2 3 4;3 5 5].\[2 9 8;3 10 15]-[1 3 2;1 2 3]
  331.  ans  =
  332.  
  333. !   0.    0.    0. !
  334. !   0.    0.    0. !
  335.  
  336. [2 i 4;3 5 5].\[2 9 8;3 10 15]-[1 -9*i 2 ;1 2 3]
  337.  ans  =
  338.  
  339. !   0    0    0 !
  340. !   0    0    0 !
  341.  
  342. [2 3 4;3 5 5].\[i 9 8;3 10 15]-[.5*i 3 2;1 2 3]
  343.  ans  =
  344.  
  345. !   0    0    0 !
  346. !   0    0    0 !
  347.  
  348. [i 3 4;3 5 5].\[i 9 8;3 10 15]-[1 3 2;1 2 3]
  349.  ans  =
  350.  
  351. !   0    0    0 !
  352. !   0    0    0 !
  353.  
  354. //multiplication
  355.  
  356. [1 2 3;4 5 6]*[3;2;1]-[10;28]
  357.  ans  =
  358.  
  359. !   0. !
  360. !   0. !
  361.  
  362. [1 i 3;4 5 6]*[3;2;1]-[6+2*i;28]
  363.  ans  =
  364.  
  365. !   0 !
  366. !   0 !
  367.  
  368. [1 2 3;4 5 6]*[i;2;1]-[i+7;4*i+16]
  369.  ans  =
  370.  
  371. !   0 !
  372. !   0 !
  373.  
  374. [1 i 3;2*i,-i,1]*[i;-i;i]-[4*i+1;-3+i]
  375.  ans  =
  376.  
  377. !   0 !
  378. !   0 !
  379.  
  380. //eye
  381.  
  382. eye(4,4)
  383.  ans  =
  384.  
  385. !   1.    0.    0.    0. !
  386. !   0.    1.    0.    0. !
  387. !   0.    0.    1.    0. !
  388. !   0.    0.    0.    1. !
  389.  
  390. //a+-b*eye a*eye+-b a+-eye*b eye*a+-b
  391.  
  392. -2*eye+[1 2;3 4]+eye*2-[1 2;3 4]
  393.  ans  =
  394.  
  395. !   0.    0. !
  396. !   0.    0. !
  397.  
  398. -2*i*eye+[1 2;3 4]+eye*2*i-[1 2;3 4]
  399.  ans  =
  400.  
  401. !   0    0 !
  402. !   0    0 !
  403.  
  404. // :
  405.  
  406. 1:10
  407.  ans  =
  408.  
  409. !   1.    2.    3.    4.    5.    6.    7.    8.    9.    10. !
  410.  
  411. 1:.1:2
  412.  ans  =
  413.  
  414.  
  415.          column  1 to 10
  416.  
  417. !   1.    1.1    1.2    1.3    1.4    1.5    1.6    1.7    1.8    1.9 !
  418.  
  419.          column 11
  420.  
  421. !   2. !
  422.  
  423. // for
  424.  
  425. for k=1:3,for l=1:2,a(k,l)=k+l;end;end;a
  426.  a  =
  427.  
  428. !   2.    3. !
  429. !   3.    4. !
  430. !   4.    5. !
  431.  
  432. diag([1 2 3])-[1 0 0;0 2 0;0 0 3]
  433.  ans  =
  434.  
  435. !   0.    0.    0. !
  436. !   0.    0.    0. !
  437. !   0.    0.    0. !
  438.  
  439. diag([1 i 2])-[1 0 0;0 i 0;0 0 2]
  440.  ans  =
  441.  
  442. !   0    0    0 !
  443. !   0    0    0 !
  444. !   0    0    0 !
  445.  
  446. a=[1 2 3 4;5 6 7 8];
  447.  
  448. c=a;
  449.  
  450. c(1,1)=i;
  451.  
  452. diag(a)-[1;6]
  453.  ans  =
  454.  
  455. !   0. !
  456. !   0. !
  457.  
  458. diag(a,1)-[2;7]
  459.  ans  =
  460.  
  461. !   0. !
  462. !   0. !
  463.  
  464. diag(a,-1)-[5]
  465.  ans  =
  466.  
  467.     0.  
  468.  
  469. diag(a,4)
  470.  ans  =
  471.  
  472.      []
  473.  
  474. diag(c)-[i;6]
  475.  ans  =
  476.  
  477. !   0 !
  478. !   0 !
  479.  
  480. diag(c,1)-[2;7]
  481.  ans  =
  482.  
  483. !   0 !
  484. !   0 !
  485.  
  486. diag(c,-1)-[5]
  487.  ans  =
  488.  
  489.     0  
  490.  
  491. diag(c,4)
  492.  ans  =
  493.  
  494.      []
  495.  
  496. //
  497.  
  498. eye(a)
  499.  ans  =
  500.  
  501. !   1.    0.    0.    0. !
  502. !   0.    1.    0.    0. !
  503.  
  504. eye(c)
  505.  ans  =
  506.  
  507. !   1.    0.    0.    0. !
  508. !   0.    1.    0.    0. !
  509.  
  510. eye(3,3)
  511.  ans  =
  512.  
  513. !   1.    0.    0. !
  514. !   0.    1.    0. !
  515. !   0.    0.    1. !
  516.  
  517. eye(2,3)
  518.  ans  =
  519.  
  520. !   1.    0.    0. !
  521. !   0.    1.    0. !
  522.  
  523. //
  524.  
  525. ones(a)
  526.  ans  =
  527.  
  528. !   1.    1.    1.    1. !
  529. !   1.    1.    1.    1. !
  530.  
  531. ones(c)
  532.  ans  =
  533.  
  534. !   1.    1.    1.    1. !
  535. !   1.    1.    1.    1. !
  536.  
  537. ones(3,3)
  538.  ans  =
  539.  
  540. !   1.    1.    1. !
  541. !   1.    1.    1. !
  542. !   1.    1.    1. !
  543.  
  544. ones(3,2)
  545.  ans  =
  546.  
  547. !   1.    1. !
  548. !   1.    1. !
  549. !   1.    1. !
  550.  
  551. //
  552.  
  553. rand(a)
  554.  ans  =
  555.  
  556. !   0.2113249    0.0002211    0.6653811    0.8497452 !
  557. !   0.7560439    0.3303271    0.6283918    0.6857310 !
  558.  
  559. rand(c)
  560.  ans  =
  561.  
  562. !   0.8782165    0.5608486    0.7263507    0.5442573 !
  563. !   0.0683740    0.6623569    0.1985144    0.2320748 !
  564.  
  565. rand(3,3)
  566.  ans  =
  567.  
  568. !   0.2312237    0.6525135    0.2146008 !
  569. !   0.2164633    0.3076091    0.312642  !
  570. !   0.8833888    0.9329616    0.3616361 !
  571.  
  572. rand(3,2)
  573.  ans  =
  574.  
  575. !   0.2922267    0.3321719 !
  576. !   0.5664249    0.5935095 !
  577. !   0.4826472    0.5015342 !
  578.  
  579. rand
  580.  ans  =
  581.  
  582.     0.4368588  
  583.  
  584. rand('uniform')
  585.  
  586. rand('normal')
  587.  
  588. rand('seed',5)
  589.  
  590. rand('seed',0)
  591.  
  592. //
  593.  
  594. abs(c)
  595.  ans  =
  596.  
  597. !   1.    2.    3.    4. !
  598. !   5.    6.    7.    8. !
  599.  
  600. abs(a)
  601.  ans  =
  602.  
  603. !   1.    2.    3.    4. !
  604. !   5.    6.    7.    8. !
  605.  
  606. //
  607.  
  608. real(c)
  609.  ans  =
  610.  
  611. !   0.    2.    3.    4. !
  612. !   5.    6.    7.    8. !
  613.  
  614. imag(c)
  615.  ans  =
  616.  
  617. !   1.    0.    0.    0. !
  618. !   0.    0.    0.    0. !
  619.  
  620. real(a)
  621.  ans  =
  622.  
  623. !   1.    2.    3.    4. !
  624. !   5.    6.    7.    8. !
  625.  
  626. imag(a)
  627.  ans  =
  628.  
  629. !   0.    0.    0.    0. !
  630. !   0.    0.    0.    0. !
  631.  
  632. //
  633.  
  634. round(rand(3,3))
  635.  ans  =
  636.  
  637. ! - 1.    1.  - 1. !
  638. !   1.    1.    1. !
  639. !   1.    0.    0. !
  640.  
  641. //
  642.  
  643. conj(a)
  644.  ans  =
  645.  
  646. !   1.    2.    3.    4. !
  647. !   5.    6.    7.    8. !
  648.  
  649. conj(c)
  650.  ans  =
  651.  
  652. ! - i      2.    3.    4. !
  653. !   5.     6.    7.    8. !
  654.  
  655. //
  656.  
  657. size(a)
  658.  ans  =
  659.  
  660. !   2.    4. !
  661.  
  662. [m,n]=size(a)
  663.  n  =
  664.  
  665.     4.  
  666.  m  =
  667.  
  668.     2.  
  669.  
  670. //
  671.  
  672. triu(a)
  673.  ans  =
  674.  
  675. !   1.    2.    3.    4. !
  676. !   0.    6.    7.    8. !
  677.  
  678. tril(a)
  679.  ans  =
  680.  
  681. !   1.    0.    0.    0. !
  682. !   5.    6.    0.    0. !
  683.  
  684. triu(a,1)
  685.  ans  =
  686.  
  687. !   0.    2.    3.    4. !
  688. !   0.    0.    7.    8. !
  689.  
  690. triu(a,-1)
  691.  ans  =
  692.  
  693. !   1.    2.    3.    4. !
  694. !   5.    6.    7.    8. !
  695.  
  696. tril(a,1)
  697.  ans  =
  698.  
  699. !   1.    2.    0.    0. !
  700. !   5.    6.    7.    0. !
  701.  
  702. tril(a,-1)
  703.  ans  =
  704.  
  705. !   0.    0.    0.    0. !
  706. !   5.    0.    0.    0. !
  707.  
  708. triu(c)
  709.  ans  =
  710.  
  711. !   i      2.    3.    4. !
  712. !   0      6.    7.    8. !
  713.  
  714. tril(c)
  715.  ans  =
  716.  
  717. !   i      0     0    0 !
  718. !   5.     6.    0    0 !
  719.  
  720. triu(c,1)
  721.  ans  =
  722.  
  723. !   0    2.    3.    4. !
  724. !   0    0     7.    8. !
  725.  
  726. triu(c,10)
  727.  ans  =
  728.  
  729. !   0    0    0    0 !
  730. !   0    0    0    0 !
  731.  
  732. triu(c,-1)
  733.  ans  =
  734.  
  735. !   i      2.    3.    4. !
  736. !   5.     6.    7.    8. !
  737.  
  738. triu(c,-10)
  739.  ans  =
  740.  
  741. !   i      2.    3.    4. !
  742. !   5.     6.    7.    8. !
  743.  
  744. tril(c,1)
  745.  ans  =
  746.  
  747. !   i      2.    0     0 !
  748. !   5.     6.    7.    0 !
  749.  
  750. tril(c,10)
  751.  ans  =
  752.  
  753. !   i      2.    3.    4. !
  754. !   5.     6.    7.    8. !
  755.  
  756. tril(c,-1)
  757.  ans  =
  758.  
  759. !   0     0    0    0 !
  760. !   5.    0    0    0 !
  761.  
  762. tril(c,-10)
  763.  ans  =
  764.  
  765. !   0    0    0    0 !
  766. !   0    0    0    0 !
  767.  
  768. //test de matlu
  769.  
  770. a=rand(4,4);b=rand(5,4);ac=a+i*rand(4,4);bc=b+i*rand(5,4);
  771.  
  772. //
  773.  
  774. if abs((1/a)*a-eye)> 10*%eps then bugmes();quit;end
  775.  
  776. if abs((i/a)*a-i*eye)> 10*%eps then bugmes();quit;end
  777.  
  778. if abs((1/ac)*ac-eye)> 10*%eps then bugmes();quit;end
  779.  
  780. if abs((i/ac)*ac-i*eye)> 10*%eps then bugmes();quit;end
  781.  
  782. if abs(a*(a\1)-eye)> 10*%eps then bugmes();quit;end
  783.  
  784. if abs(a*(a\i)-i*eye)> 10*%eps then bugmes();quit;end
  785.  
  786. if abs(ac*(ac\1)-eye)> 10*%eps then bugmes();quit;end
  787.  
  788. if abs(ac*(ac\i)-eye*i)> 10*%eps then bugmes();quit;end
  789.  
  790. //
  791.  
  792. if abs(inv(a)*a-eye)> 10*%eps then bugmes();quit;end
  793.  
  794. if abs(inv(ac)*ac-eye)> 10*%eps then bugmes();quit;end
  795.  
  796. //
  797.  
  798. if abs((b/a)*a-b)> 10*%eps then bugmes();quit;end
  799.  
  800. if abs((b/ac)*ac-b)> 10*%eps then bugmes();quit;end
  801.  
  802. if abs((bc/a)*a-bc)> 10*%eps then bugmes();quit;end
  803.  
  804. if abs((bc/ac)*ac-bc)> 10*%eps then bugmes();quit;end
  805.  
  806. //
  807.  
  808. if abs(a*(a\b')-b')> 10*%eps then bugmes();quit;end
  809.  
  810. if abs(ac*(ac\b')-b')> 10*%eps then bugmes();quit;end
  811.  
  812. if abs(a*(a\bc')-bc')> 10*%eps then bugmes();quit;end
  813.  
  814. if abs(ac*(ac\bc')-bc')> 10*%eps then bugmes();quit;end
  815.  
  816. //
  817.  
  818. [l u]=lu(a);
  819.  
  820. if abs(l*u-a)> 10*%eps then bugmes();quit;end
  821.  
  822. [l u]=lu(ac);
  823.  
  824. if abs(l*u-ac)> 10*%eps then bugmes();quit;end
  825.  
  826. //
  827.  
  828. h1(5,5)=0;for k=1:5,for l=1:5, h1(k,l)=1/(k+l-1);end;end;
  829.  
  830. if abs(inv(h1)-matrix('hilb',5))> 1.e-7 then bugmes();quit;end
  831.  
  832. //
  833.  
  834. if abs(det(matrix('magic',5))-5070000)> 1.e-7 then bugmes();quit;end
  835.  
  836. //
  837.  
  838. b=a*a';h=chol(b);
  839.  
  840. if abs(h'*h-b)> 10*%eps then bugmes();quit;end
  841.  
  842. bc=triu(ac*ac');bc=bc+bc'-diag(real(diag(bc)));;h=chol(bc);
  843.  
  844. if abs(h'*h-bc)> 10*%eps then bugmes();quit;end
  845.  
  846. //test de matqr
  847.  
  848. a=rand(3,4);b=rand(3,4);ac=a+i*rand(3,4);bc=b+i*rand(3,4);
  849.  
  850. //
  851.  
  852. if abs(a*(1/a)*a-a)> 10*%eps then bugmes();quit;end
  853.  
  854. if abs(a*(i/a)*a-i*a)> 10*%eps then bugmes();quit;end
  855.  
  856. if abs(a*(a\ 1)*a-a)> 10*%eps then bugmes();quit;end
  857.  
  858. if abs(a*(a\ i)*a-i*a)> 10*%eps then bugmes();quit;end
  859.  
  860. if abs(ac*(1/ac)*ac-ac)> 10*%eps then bugmes();quit;end
  861.  
  862. if abs(ac*(i/ac)*ac-i*ac)> 10*%eps then bugmes();quit;end
  863.  
  864. if abs(ac*(ac\ 1)*ac-ac)> 10*%eps then bugmes();quit;end
  865.  
  866. if abs(ac*(ac\ i)*ac-i*ac)> 10*%eps then bugmes();quit;end
  867.  
  868. //
  869.  
  870. if abs(a/b-a*(1/b))> 10*%eps then bugmes();quit;end
  871.  
  872. if abs(ac/b-ac*(1/b))> 10*%eps then bugmes();quit;end
  873.  
  874. if abs(a/bc-a*(1/bc))> 10*%eps then bugmes();quit;end
  875.  
  876. if abs(ac/bc-ac*(1/bc))> 10*%eps then bugmes();quit;end
  877.  
  878. //
  879.  
  880. if abs(a\ b -(a\ 1)*b)> 10*%eps then bugmes();quit;end
  881.  
  882. if abs(a\ bc-(a\ 1)*bc)> 10*%eps then bugmes();quit;end
  883.  
  884. if abs(ac\ b-(ac\ 1)*b)> 10*%eps then bugmes();quit;end
  885.  
  886. if abs(ac\ bc-(ac\ 1)*bc)> 10*%eps then bugmes();quit;end
  887.  
  888. //
  889.  
  890. //elemt-wise
  891.  
  892. a=rand(3,2);ai=a+rand(3,2)*%i;
  893.  
  894. de=2;
  895.  
  896. if norm(ai.*de-ai*de,1) >1000*%eps then bugmes();quit;end
  897.  
  898. if norm(de.*ai-de*ai,1) >1000*%eps then bugmes();quit;end
  899.  
  900. if norm(ai.*de-ai*de,1) >1000*%eps then bugmes();quit;end
  901.  
  902. if norm(de.*ai-de*ai,1) >1000*%eps then bugmes();quit;end
  903.  
  904. de=de+3*%i;
  905.  
  906. if norm(ai.*de-ai*de,1) >1000*%eps then bugmes();quit;end
  907.  
  908. if norm(de.*ai-de*ai,1) >1000*%eps then bugmes();quit;end
  909.  
  910. if norm(ai.*de-ai*de,1) >1000*%eps then bugmes();quit;end
  911.  
  912. if norm(de.*ai-de*ai,1) >1000*%eps then bugmes();quit;end
  913.  
  914. //
  915.  
  916. de=2;def=de*ones(a);
  917.  
  918. if norm(a./de-a./def,1) >1000*%eps then bugmes();quit;end
  919.  
  920. if norm(ai./de-ai./def,1) >1000*%eps then bugmes();quit;end
  921.  
  922. //
  923.  
  924. de=2+3*%i;def=de*ones(a);
  925.  
  926. if norm(a./de-a./def,1) >1000*%eps then bugmes();quit;end
  927.  
  928. if norm(ai./de-ai./def,1) >1000*%eps then bugmes();quit;end
  929.  
  930. de=2;def=de*ones(a);
  931.  
  932. if norm(a.\de-a.\def,1) >1000*%eps then bugmes();quit;end
  933.  
  934. if norm(ai.\de-ai.\def,1) >1000*%eps then bugmes();quit;end
  935.  
  936. //
  937.  
  938. de=2+3*%i;def=de*ones(a);
  939.  
  940. if norm(a.\de-a.\def,1) >1000*%eps then bugmes();quit;end
  941.  
  942. if norm(ai.\de-ai.\def,1) >1000*%eps then bugmes();quit;end
  943.  
  944.  
  945. ///////////
  946.  
  947. de=2;def=de*ones(a);
  948.  
  949. if norm(de.\a-de.\a,1) >1000*%eps then bugmes();quit;end
  950.  
  951. if norm(de.\ai-def.\ai,1) >1000*%eps then bugmes();quit;end
  952.  
  953. //
  954.  
  955. de=2+3*%i;def=de*ones(a);
  956.  
  957. if norm(de.\a-def.\a,1) >1000*%eps then bugmes();quit;end
  958.  
  959. if norm(de.\ai-def.\ai,1) >1000*%eps then bugmes();quit;end
  960.  
  961. de=2;def=de*ones(a);
  962.  
  963. if norm(de./a-def./a,1) >1000*%eps then bugmes();quit;end
  964.  
  965. if norm(de./ai-def./ai,1) >1000*%eps then bugmes();quit;end
  966.  
  967. //
  968.  
  969. de=2+3*%i;def=de*ones(a);
  970.  
  971. if norm(de./a-def./a,1) >1000*%eps then bugmes();quit;end
  972.  
  973. if norm(de./ai-def./ai,1) >1000*%eps then bugmes();quit;end
  974.  
  975. //
  976.  
  977. [p,r]=qr(a);
  978.  
  979. if abs(p*r-a)> 10*%eps then bugmes();quit;end
  980.  
  981. [p,r]=qr(a');
  982.  
  983. if abs(p*r-a')> 10*%eps then bugmes();quit;end
  984.  
  985. [p,r,x]=qr(a);
  986.  
  987. if abs(p*r*x'-a)> 10*%eps then bugmes();quit;end
  988.  
  989. [p,r]=qr(ac);
  990.  
  991. if abs(p*r-ac)> 10*%eps then bugmes();quit;end
  992.  
  993. [p,r,x]=qr(ac);
  994.  
  995. if abs(p*r-ac*x)> 10*%eps then bugmes();quit;end
  996.  
  997. //
  998.  
  999. if abs(cond(diag([1 2 3 4]))-4)> 10*%eps then bugmes();quit;end
  1000.  
  1001. if abs(cond(diag([1 i 3 4]))-4)> 10*%eps then bugmes();quit;end
  1002.  
  1003. v=[1 2 3 4 5];
  1004.  
  1005. if abs(norm(v,1)-15)> 10*%eps then bugmes();quit;end
  1006.  
  1007. if abs(norm(v,'inf')-5)> 10*%eps then bugmes();quit;end
  1008.  
  1009. if abs(norm(v,2)-sqrt(55))> 10*%eps then bugmes();quit;end
  1010.  
  1011. if abs(norm(v,'fro')-sqrt(55))> 10*%eps then bugmes();quit;end
  1012.  
  1013. v=v';
  1014.  
  1015. if abs(norm(v,1)-15)> 10*%eps then bugmes();quit;end
  1016.  
  1017. if abs(norm(v,'inf')-5)> 10*%eps then bugmes();quit;end
  1018.  
  1019. if abs(norm(v,2)-sqrt(55))> 10*%eps then bugmes();quit;end
  1020.  
  1021. if abs(norm(v,'fro')-sqrt(55))> 10*%eps then bugmes();quit;end
  1022.  
  1023. v=[i 2 3 4 5];
  1024.  
  1025. if abs(norm(v,'inf')-5)> 10*%eps then bugmes();quit;end
  1026.  
  1027. if abs(norm(v,2)-sqrt(55))> 10*%eps then bugmes();quit;end
  1028.  
  1029. if abs(norm(v,'fro')-sqrt(55))> 10*%eps then bugmes();quit;end
  1030.  
  1031. v=v';
  1032.  
  1033. if abs(norm(v,1)-15)> 10*%eps then bugmes();quit;end
  1034.  
  1035. if abs(norm(v,'inf')-5)> 10*%eps then bugmes();quit;end
  1036.  
  1037. if abs(norm(v,2)-sqrt(55))> 10*%eps then bugmes();quit;end
  1038.  
  1039. if abs(norm(v,'fro')-sqrt(55))> 10*%eps then bugmes();quit;end
  1040.  
  1041. a=[diag([1 2 3]);[0 0 0]];
  1042.  
  1043. if abs(norm(a,1)-3)> 10*%eps then bugmes();quit;end
  1044.  
  1045. if abs(norm(a,'inf')-3)> 10*%eps then bugmes();quit;end
  1046.  
  1047. if abs(norm(a,2)-3)> 10*%eps then bugmes();quit;end
  1048.  
  1049. if abs(norm(a,'fro')-sqrt(14))> 10*%eps then bugmes();quit;end
  1050.  
  1051. a=a';
  1052.  
  1053. if abs(norm(a,1)-3)> 10*%eps then bugmes();quit;end
  1054.  
  1055. if abs(norm(a,'inf')-3)> 10*%eps then bugmes();quit;end
  1056.  
  1057. if abs(norm(a,2)-3)> 10*%eps then bugmes();quit;end
  1058.  
  1059. if abs(norm(a,'fro')-sqrt(14))> 10*%eps then bugmes();quit;end
  1060.  
  1061. a=[diag([i,2,3]),[0;0;0]];
  1062.  
  1063. if abs(norm(a,'inf')-3)> 10*%eps then bugmes();quit;end
  1064.  
  1065. if abs(norm(a,2)-3)> 10*%eps then bugmes();quit;end
  1066.  
  1067. if abs(norm(a,'fro')-sqrt(14))> 10*%eps then bugmes();quit;end
  1068.  
  1069. a=a';
  1070.  
  1071. if abs(norm(a,1)-3)> 10*%eps then bugmes();quit;end
  1072.  
  1073. if abs(norm(a,'inf')-3)> 10*%eps then bugmes();quit;end
  1074.  
  1075. if abs(norm(a,2)-3)> 10*%eps then bugmes();quit;end
  1076.  
  1077. if abs(norm(a,'fro')-sqrt(14))> 10*%eps then bugmes();quit;end
  1078.  
  1079. //
  1080.  
  1081. a=rand(3,5);ac=a+i*rand(3,5);
  1082.  
  1083. [u,s,v]=svd(a);u*s*v'-a;
  1084.  
  1085. if abs(svd(a)-diag(s))> 10*%eps then bugmes();quit;end
  1086.  
  1087. [u,s,v]=svd(ac);u*s*v'-ac;
  1088.  
  1089. if abs(svd(ac)-diag(s))> 10*%eps then bugmes();quit;end
  1090.  
  1091. //
  1092.  
  1093. [u,s,v]=svd(a,0);u*s*v'-a;
  1094.  
  1095. if abs(svd(a,0)-diag(s,0))> 10*%eps then bugmes();quit;end
  1096.  
  1097. [u,s,v]=svd(ac,0);u*s*v'-ac;
  1098.  
  1099. if abs(svd(ac,0)-diag(s))> 10*%eps then bugmes();quit;end
  1100.  
  1101. a=a';ac=ac';
  1102.  
  1103. a=rand(3,5);ac=a+i*rand(3,5);
  1104.  
  1105. [u,s,v]=svd(a);u*s*v'-a;
  1106.  
  1107. if abs(svd(a)-diag(s))> 10*%eps then bugmes();quit;end
  1108.  
  1109. [u,s,v]=svd(ac);u*s*v'-ac;
  1110.  
  1111. if abs(svd(ac)-diag(s))> 10*%eps then bugmes();quit;end
  1112.  
  1113. //
  1114.  
  1115. [u,s,v]=svd(a,0);u*s*v'-a;
  1116.  
  1117. if abs(svd(a,0)-diag(s,0))> 10*%eps then bugmes();quit;end
  1118.  
  1119. [u,s,v]=svd(ac,0);u*s*v'-ac;
  1120.  
  1121. if abs(svd(ac,0)-diag(s))> 10*%eps then bugmes();quit;end
  1122.  
  1123. //
  1124.  
  1125. if abs(a*pinv(a)*a-a)> 10*%eps then bugmes();quit;end
  1126.  
  1127. if abs(ac*pinv(ac)*ac -ac)> 10*%eps then bugmes();quit;end
  1128.  
  1129. a=a';ac=ac';
  1130.  
  1131. if abs(a*pinv(a)*a-a)> 10*%eps then bugmes();quit;end
  1132.  
  1133. if abs(ac*pinv(ac)*ac-ac)> 10*%eps then bugmes();quit;end
  1134.  
  1135. //
  1136.  
  1137. if abs(rank(a)-3)> 10*%eps then bugmes();quit;end
  1138.  
  1139. if abs(rank(ac)-3)> 10*%eps then bugmes();quit;end
  1140.  
  1141. rand('seed',0)
  1142.  
  1143. // matdsr  matdsc
  1144.  
  1145. a=rand(4,4);ac=a+i*rand(4,4);t=a*a';tc=ac*ac';
  1146.  
  1147. tc=triu(tc,1)+triu(tc,1)'+diag(real(diag(tc)));
  1148.  
  1149. //
  1150.  
  1151. //hess
  1152.  
  1153. [u,h]=hess(a);
  1154.  
  1155. if norm(u*h*u'-a,1) > 20*%eps then bugmes();quit;end
  1156.  
  1157. if abs(norm(h-hess(a),1))> 10*%eps then bugmes();quit;end
  1158.  
  1159. [u,h]=hess(ac);
  1160.  
  1161. if norm(u*h*u'-ac,1) > 200*%eps then bugmes();quit;end
  1162.  
  1163. if abs(norm(h-hess(ac),1))> 10*%eps then bugmes();quit;end
  1164.  
  1165. [u,h]=hess(t);
  1166.  
  1167. if norm(u*h*u'-t,1)  > 200*%eps then bugmes();quit;end
  1168.  
  1169. if abs(norm(h-hess(t),1))> 10*%eps then bugmes();quit;end
  1170.  
  1171. [u,h]=hess(tc);
  1172.  
  1173. if norm(u*h*u'-tc,1)  > 200*%eps then bugmes();quit;end
  1174.  
  1175. if abs(norm(h-hess(tc),1))> 10*%eps then bugmes();quit;end
  1176.  
  1177. //schur
  1178.  
  1179. [u,s]=schur(a);
  1180.  
  1181. if norm(u*s*u'-a,1 ) > 200*%eps then bugmes();quit;end
  1182.  
  1183. if norm(s-schur(a),1 ) > 200*%eps then bugmes();quit;end
  1184.  
  1185. if norm(spec(a)-spec(s),1)> 200*%eps then bugmes();quit;end
  1186.  
  1187. [u,s]=schur(ac);
  1188.  
  1189. if norm(u*s*u'-ac,1 ) > 200*%eps then bugmes();quit;end
  1190.  
  1191. if norm(s-schur(ac),1 ) > 200*%eps then bugmes();quit;end
  1192.  
  1193. if norm(spec(ac)-spec(s),1)> 200*%eps then bugmes();quit;end
  1194.  
  1195. [u,s]=schur(t);
  1196.  
  1197. if norm(u*s*u'-t,1 ) > 200*%eps then bugmes();quit;end
  1198.  
  1199. if norm(s-schur(t),1 ) > 200*%eps then bugmes();quit;end
  1200.  
  1201. if norm(diag(s)-spec(t),1)> 200*%eps then bugmes();quit;end
  1202.  
  1203. [u,s]=schur(tc);
  1204.  
  1205. if norm(u*s*u'-tc,1 ) > 200*%eps then bugmes();quit;end
  1206.  
  1207. if norm(s-schur(tc),1 ) > 200*%eps then bugmes();quit;end
  1208.  
  1209. if norm(diag(s)-spec(tc),1) > 200*%eps then bugmes();quit;end
  1210.  
  1211. // fonctions matricielles
  1212.  
  1213. s=sqrt(t);
  1214.  
  1215. if norm(t-s*s,1) > 200*%eps then bugmes();quit;end
  1216.  
  1217. s=log(t);
  1218.  
  1219. if norm(t-exp(s)) > 200*%eps then bugmes();quit;end
  1220.  
  1221. s=sqrt(tc);
  1222.  
  1223. if norm(tc-s*s,1) > 220*%eps then bugmes();quit;end
  1224.  
  1225. s=exp(tc);s=triu(s,1)+triu(s,1)'+diag(real(diag(s)));
  1226.  
  1227. if norm(log(s)-tc,1)> 1.e-9 then bugmes();quit;end
  1228.  
  1229. if norm(sin(t)**2+cos(t)**2-eye,1) > 22*%eps then bugmes();quit;end
  1230.  
  1231. if norm(sin(tc)**2+cos(tc)**2-eye,1) > 20*%eps then bugmes();quit;end
  1232.  
  1233. //poly et root
  1234.  
  1235. p=rand(5,1);pc=p+i*rand(5,1);x=poly(0,'x');
  1236.  
  1237. if norm(sort(p )-sort(real(roots(poly(p,'x'))))) > 1000*%eps then bugmes();quit;end
  1238.  
  1239. if norm(sort(imag(pc))-sort(real(roots(poly(imag(pc),'x'))))) > 1000*%eps then bugmes();quit;end
  1240.  
  1241. //**
  1242.  
  1243. if norm(t^(-1)-inv(t),1) > 200*%eps then bugmes();quit;end
  1244.  
  1245. if norm(tc**(-1)-inv(tc),1) > 200*%eps then bugmes();quit;end
  1246.  
  1247. x=rand+i*rand;
  1248.  
  1249. if norm((t**x)*(t^(-x))-eye,1) > 200*%eps then bugmes();quit;end
  1250.  
  1251. if norm((tc**x)*(tc**(-x))-eye,1) > 200*%eps then bugmes();quit;end
  1252.  
  1253. //element op
  1254.  
  1255. if norm(sin([0 pi/2 pi 3*pi/2])-[0 1 0 -1],1) > 10*%eps then bugmes();quit;end
  1256.  
  1257. if norm(cos([0 pi/2 pi 3*pi/2])-[1 0 -1 0],1) > 10*%eps then bugmes();quit;end
  1258.  
  1259. if norm(log([e 1/e e**2])-[1 -1 2],1) > 10*%eps then bugmes();quit;end
  1260.  
  1261. if norm(exp([1 -1 2])-[e 1/e e**2],1) > 10*%eps then bugmes();quit;end
  1262.  
  1263. if norm(sqrt([1 -1 4])-[1 i 2],1) > 10*%eps then bugmes();quit;end
  1264.  
  1265. if norm(sin(x)-(exp(i*x)-exp(-i*x))/(2*i),1) > 10*%eps then bugmes();quit;end
  1266.  
  1267. if norm(cos(x)-(exp(i*x)+exp(-i*x))/2,1) > 10*%eps then bugmes();quit;end
  1268.  
  1269. if norm(sqrt(x)^2-x,1) > 10*%eps then bugmes();quit;end
  1270.  
  1271. if norm(log(exp(x))-x,1) > 10*%eps then bugmes();quit;end
  1272.  
  1273. // triu
  1274.  
  1275. z=poly(0,'z');a=[z 1 -z+1  8;z*z 10*z 5 -z;3 7 z+1 -1-z];
  1276.  
  1277. [m,n]=size(a);mn=mini([m n]);a1=a;l=1;
  1278.  
  1279. //
  1280.  
  1281. for dg=-(m-1):0,
  1282.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1283.    for k=1:l,a1(-dg+k,k)=0;end,l=mini([l+1,mn]);end
  1284.  
  1285. for dg=1:n,
  1286.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1287.    if dg>(n-m),l=l-1;end;for k=1:l,a1(k,dg+k)=0;end;end;
  1288.  
  1289. //
  1290.  
  1291. a=a';a1=a;[m,n]=size(a);mn=mini([m,n]);l=1;
  1292.  
  1293. for dg=-(m-1):0,
  1294.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1295.    for k=1:l,a1(-dg+k,k)=0;end,l=mini([l+1,mn]);end
  1296.  
  1297. for dg=1:n,
  1298.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1299.    if dg>(n-m),l=l-1;end;for k=1:l,a1(k,dg+k)=0;end;end;
  1300.  
  1301. //
  1302.  
  1303. a=a+%i*[1 2 3 4;5 6 7 8;9 10 11 12]';
  1304.  
  1305. [m,n]=size(a);mn=mini([m n]);a1=a;l=1;
  1306.  
  1307. //
  1308.  
  1309. for dg=-(m-1):0,
  1310.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1311.    for k=1:l,a1(-dg+k,k)=0;end,l=mini([l+1,mn]);end
  1312.  
  1313. for dg=1:n,
  1314.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1315.    if dg>(n-m),l=l-1;end;for k=1:l,a1(k,dg+k)=0;end;end;
  1316.  
  1317. //
  1318.  
  1319. a=a';a1=a;[m,n]=size(a);mn=mini([m,n]);l=1;
  1320.  
  1321. for dg=-(m-1):0,
  1322.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1323.    for k=1:l,a1(-dg+k,k)=0;end,l=mini([l+1,mn]);end
  1324.  
  1325. for dg=1:n,
  1326.    if norm(coeff(triu(a,dg)-a1),1)>%eps then dg,bugmes();quit;end,
  1327.    if dg>(n-m),l=l-1;end;for k=1:l,a1(k,dg+k)=0;end;end;
  1328.  
  1329.  
  1330. //test de clear
  1331.  
  1332. x=[1,2,3];
  1333.  
  1334. clear x,if exists('x')==1 then bugmes();quit;end
  1335.  
  1336. x=[1,2,3];y='afs';
  1337.  
  1338. clear x y,if exists('x')==1| exists('y')==1 then bugmes();quit;end
  1339.  
  1340. X=[1,2,3];Y='afs';
  1341.  
  1342. clear X Y,if exists('X')==1| exists('Y')==1 then bugmes();quit;end
  1343.  
  1344.